home *** CD-ROM | disk | FTP | other *** search
- ⓪ IMPLEMENTATION MODULE SysInfo;⓪ (*$X+,Y+,L-,N+*)⓪ ⓪ (*⓪!* 17.10.90 FPU() verändert FPU-Status nicht mehr -> keine Prot-Violation⓪!* 30.10.90 FPUModel() liefert korrekten Wert bei 68882 im TT⓪!* 10.11.90 68030-Erkennung korrigiert, aber nicht getestet⓪!* 17.12.90 68030-Erkennung nochmals korrigiert, aber nicht getestet⓪!* Besser: Bei 68030 gibt's offenbar zusätzliche Register TT0/TT1.⓪!* Sie sollten abgefragt werden, allerdings habe ich keinen Code⓪!* für sie!⓪!* 08.02.91 68030-Erkennung nochmals korrigiert und getestet.⓪!* 14.02.92 CallSuper/ToSuper statt Supexec wg. MinT⓪!* 28.02.92 GetTOSVersion korrigiert.⓪!* 11.04.95 68040-Erkennung f. CPU()⓪!*)⓪ ⓪ FROM SYSTEM IMPORT ASSEMBLER;⓪ FROM MOSGlobals IMPORT Date;⓪ FROM CookieJar IMPORT GetCookie;⓪ FROM MOSSupport IMPORT CallSuper, ToSuper, ToUser;⓪ ⓪ PROCEDURE UnpackDate ( d: CARDINAL ): Date;⓪"BEGIN⓪$ASSEMBLER⓪(MOVE -(A3),D0⓪(⓪(MOVE D0,D1⓪(ANDI #$1F,D1⓪(MOVE D1,(A3)+⓪(⓪(LSR #5,D0⓪(MOVE D0,D1⓪(ANDI #$F,D1⓪(MOVE D1,(A3)+⓪(⓪(LSR #4,D0⓪(ADDI #1980,D0⓪(MOVE D0,(A3)+⓪$END⓪"END UnpackDate;⓪ ⓪ PROCEDURE cpuTest;⓪"BEGIN⓪$ASSEMBLER⓪(MOVE.L A7,D2⓪(LEA $10,A1 ; Illegal Instruction Exc-Vektor⓪(MOVE.L (A1),D1⓪(LEA b(PC),A0⓪(MOVE.L A0,(A1)⓪(MOVE.L #68000,D0⓪(DC.W $51FC ; TRAPF⓪(MOVE.L D1,(A1)⓪((* dieser 68030-Test klappt nicht:⓪*LEA $2C,A1 ; Line F Exc-Vektor⓪*MOVE.L (A1),D1⓪*LEA b(PC),A0⓪*MOVE.L A0,(A1)⓪*MOVE.L #68020,D0⓪*DC.W $F000,4300 ; PMOVE TC,D0⓪*MOVE.L #68030,D0⓪(*)⓪(MOVE.L #68030,D0⓪(; Erkennung der 68030 durch Aktivieren und Prüfen des Data-Cache⓪(MOVEC CACR,D1⓪(MOVE.L D1,D2⓪(ORI.W #100100000000%,D2 ; clear & enable data cache⓪(MOVE SR,-(A7)⓪(ORI #$0700,SR⓪(MOVEC D2,CACR ; enable data cache⓪(MOVEC CACR,D2 ; read cache ctrl reg⓪(BTST #8,D2 ; data cache enabled?⓪(BNE e⓪(BSET #15,D2 ; enable 68040 instr. cache⓪(MOVEC D2,CACR ; write cache reg⓪(MOVEC CACR,D2 ; read cache ctrl reg⓪(MOVE.L #68020,D0⓪(BTST #15,D2⓪(BEQ e⓪(MOVE.L #68040,D0⓪&e MOVEC D1,CACR⓪(MOVE (A7)+,SR⓪(RTS⓪&b MOVE.L D2,A7⓪(MOVE.L D1,(A1)⓪$END⓪"END cpuTest;⓪ ⓪ PROCEDURE CPU (): LONGCARD;⓪"BEGIN⓪$ASSEMBLER⓪(PEA cpuTest⓪(JSR CallSuper⓪(ADDQ.L #4,A7⓪(MOVE.L D0,(A3)+⓪$END⓪"END CPU;⓪ ⓪ PROCEDURE Has020 (): BOOLEAN;⓪"BEGIN⓪$ASSEMBLER⓪(JSR CPU⓪(CMPI.L #68020,-(A3)⓪(SCC D0⓪(ANDI #1,D0⓪(MOVE D0,(A3)+⓪$END⓪"END Has020;⓪ ⓪ PROCEDURE FPU (): FPUType;⓪"BEGIN⓪$ASSEMBLER⓪(SUBQ.L #4,A7⓪(JSR ToSuper⓪ ⓪(JSR cpuTest⓪(CMPI.L #68020,D0⓪(BCS noLineF⓪ ⓪(; bei 68020 Line F-Test machen⓪(; alle Interrupts sperren, weil LineF-Vektor verbogen wird⓪(MOVE.L A7,D2⓪(MOVE.L $2C,D1 ; Line F emulator⓪(LEA c(PC),A0⓪(MOVE SR,D0⓪(ORI #$0700,SR ; TT 16.1.93 (vorher: MOVE #$2700,SR)⓪(MOVE.L A0,$2C⓪(FNOP⓪(MOVE.L D1,$2C⓪(MOVE D0,SR⓪(MOVEQ #internalFPU,D0⓪(BRA e ; wir haben eine FPU zur 68020 erkannt⓪ ⓪&c MOVE.L D1,$2C⓪(MOVE D0,SR⓪(MOVE.L D2,A7⓪ ⓪&noLineF⓪(MOVEQ #noFPU,D0⓪(MOVE.L A7,D2⓪(MOVE.L $08,D1 ; BusError-Exc-Vektor⓪(LEA b(PC),A0⓪(MOVE.L A0,$08⓪(TST.W $FFFFFA40⓪(MOVEQ #externalFPU,D0⓪&b MOVE.L D2,A7⓪(MOVE.L D1,$08⓪&e MOVE D0,(A3)+⓪(⓪(JSR ToUser⓪(ADDQ.L #4,A7⓪$END⓪"END FPU;⓪ ⓪ PROCEDURE GetTOSVersion (VAR version, revision: CARDINAL;⓪9VAR date: Date);⓪"BEGIN⓪$ASSEMBLER⓪(SUBQ.L #4,A7⓪(JSR ToSuper⓪ ⓪(MOVE.L $4F2,A0 ; sysbase⓪(MOVEQ #0,D0⓪(MOVE.B 2(A0),D0⓪(MOVE.L -12(A3),A2⓪(MOVE.W D0,(A2) ; version⓪(MOVE.B 3(A0),D0⓪(MOVE.L -8(A3),A2⓪(MOVE.W D0,(A2) ; revision⓪(MOVE.L -(A3),-(A7) ; ADR(date)⓪(MOVE.W $1E(A0),(A3)+ ; Datum aus TOS-Header⓪(JSR UnpackDate⓪(MOVE.L (A7)+,A0⓪(MOVE.W -(A3),4(A0) ; date.year⓪(MOVE.L -(A3),(A0) ; date.day/month⓪(SUBQ.L #8,A3⓪(⓪(JSR ToUser⓪(ADDQ.L #4,A7⓪$END⓪"END GetTOSVersion;⓪"⓪ PROCEDURE UseStackFrame (): BOOLEAN;⓪"BEGIN⓪$ASSEMBLER⓪(PEA a(PC)⓪(JSR CallSuper⓪(ADDQ.L #4,A7⓪(MOVE D0,(A3)+⓪(RTS⓪ ⓪&a MOVE.L A7,D2⓪(MOVE.L $10,D1 ; Illegal Instruction Exc-Vektor⓪(LEA b(PC),A0⓪(MOVE.L A0,$10⓪(DC.W $4AFC ; ILLEGAL⓪&b MOVE.L A7,D0⓪(MOVE.L D2,A7⓪(SUB.L D0,D2⓪(SUBQ.L #6,D2⓪(SNE D0⓪(ANDI #1,D0⓪(MOVE.L D1,$10⓪$END⓪"END UseStackFrame;⓪ ⓪ PROCEDURE Machine (): CARDINAL;⓪"BEGIN⓪$ASSEMBLER⓪(MOVE.L #$5F4D4348,(A3)+ ;"_MCH"⓪(CLR.L -(A7)⓪(MOVE.L A7,(A3)+⓪(JSR GetCookie⓪(SUBQ.L #2,A3⓪(MOVE.W (A7)+,(A3)+⓪(ADDQ.L #2,A7⓪$END⓪"END Machine;⓪ ⓪ PROCEDURE FPUModel (): CARDINAL;⓪"BEGIN⓪$ASSEMBLER⓪(JSR FPU⓪(MOVE -(A3),D0⓪(CMPI #2,D0 ; internal?⓪(BCC gr ; nein - dann immer 1 bei externer FPU liefern⓪(MOVE D0,(A3)+⓪(RTS⓪(⓪%gr SUBQ.L #4,A7⓪(JSR ToSuper⓪ ⓪(MOVEQ #0,D0⓪(MOVE.L A7,A0⓪(FSAVE -(A7)⓪(CMPI.B #$18,1(A7)⓪(MOVE.L A0,A7⓪(SEQ D0⓪(ADDQ.B #2,D0⓪(MOVE D0,(A3)+⓪(⓪(JSR ToUser⓪(ADDQ.L #4,A7⓪$END⓪"END FPUModel;⓪ ⓪ END SysInfo.⓪ ə
- (* $FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$000002C3$FFEF48E4$00001497$FFEF48E4$000006B9$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4$FFEF48E4Ç$000002C3T.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$000002C3$FFAD49B2$FFAD49B2$FFAD49B2$0000082A$00000833$000007D4$000008A8$0000087E$000008AB$0000087A$000008A8$00000866$000008A8$0000029F$000002A9äÇé*)
-